As computer operating systems have grown more complex and feature-rich, they have also grown significantly larger. In order to more effectively manage these large software systems the functionality of the operating system has been partitioned into separate modules or components. The underlying rationale in partitioning the operating system is that dividing up a complex software system into smaller pieces makes the operating system easier to develop and maintain. While this may be true to a first order, the fact is that personal computer (PC)-based operating systems such as, but not limited to, Microsoft Windows 95™, Microsoft Windows 98™, and Microsoft Windows 2000™ all experience “crashes” or “hangs”, requiring the user to reboot the PC, or in some cases to cycle the power off and then on in order to restore the PC to an operational status.
It should be noted that not all of these problems are the fault of the operating system, and may instead actually be the fault of a running application. For example, the applications programmer may have forgotten to test a program path, or a program path was never traversed during testing so that some problem did not appear. In some cases, faults in the application may simply be the result of poor programming, or the failure to check the success or failure of a particular function call. Whatever the reason, the result is that the user's PC can become unresponsive or non-responsive and effectively unusable until the system is rebooted or powered off and then back on. As many user's have experienced, such problems typically occur at the most inopportune times, such as when a document or a spreadsheet must be quickly completed in order to make a deadline. Furthermore, the occurrence of these types of system failure events is unpredictable, and may occur at any time during use of the operating system or application.
One common failure mode is that a program is “leaking” memory, i.e., gradually using up small amounts of memory without releasing the used portions. This results in physical RAM memory capacity being slowly consumed until there is no more available. This type of failure mode typically causes the operating system to stop responding to user input such as keyboard strokes or mouse clicks. Because this type of failure occurs slowly over time, the user may have been working on a document or presentation for quite a while, and may have made many changes or additions to the work in progress. When the system stops responding, the user will be unable to save the work in progress, resulting in a high probability that the work in progress will be lost. In order to restore the system to a functional state the user is typically required to reboot or power cycle the system, resulting in the loss of all or at least some edits to the work in progress being lost.
Another less common problem occurs when a program consumes most or all of the computer's processing capability, thereby starving other programs of computer time for proper execution. In this situation, the system may not respond to the user's mouse movements and certain keyboard commands, including the command to restart the system, requiring the user power cycle the system in order to restore the system to a functional state.
The foregoing problems are not limited to only user applications, but apply as well to operating systems themselves. Existing operating systems require an orderly closing of applications. As each application is closed the user is presented with a dialog box asking whether changed data is to be preserved. The operating system itself requires orderly shutdown to flush its file caches, save user settings, close network connections and the like. If operating system processes have to be terminated abnormally, dialogs are presented to the user in each case. Shutdown from a moderately complex operating configuration can take upwards of a minute and require multiple user interactions. The inventors are not aware of any case wherein the operating system or an application take account of the need to move data out of the computer system to a safe place.
As can be appreciated, a need exists to lessen and ideally avoid the negative impact of system failures, malfunctions and unforeseen events on the user's work environment.